package com.smartstate.IOC.controller;


import cn.hutool.core.date.DateTime;
import com.smartstate.IOC.vo.AbnormalVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import static com.alibaba.nacos.shaded.org.checkerframework.checker.units.UnitsTools.min;

@RestController
@RequestMapping("/Abnormal")
@Api(tags = "异常行为报警")
public class AbnormalBehaviorController {

    @GetMapping("/getAbnormalBehavior")
    @ApiOperation(value = "异常行为报警")
    public List<AbnormalVo> getAbnormalBehavior(){
        List<AbnormalVo> abnormalVos = new ArrayList<>();

        AbnormalVo abnormalVo = new AbnormalVo();
        abnormalVo.setAlertType("可疑人员");
        abnormalVo.setAlarmContent("轨迹异常");
        abnormalVo.setAlarmTime("08:16:26");
        abnormalVo.setState("未确认");

        AbnormalVo abnormalVo1 = new AbnormalVo();
        abnormalVo1.setAlertType("非法闯入");
        abnormalVo1.setAlarmContent("未识别登记信息");
        abnormalVo1.setAlarmTime("09:23:48");
        abnormalVo1.setState("未确认");

        AbnormalVo abnormalVo2 = new AbnormalVo();
        abnormalVo2.setAlertType("行为异常");
        abnormalVo2.setAlarmContent("乱扔垃圾");
        abnormalVo2.setAlarmTime("09:48:01");
        abnormalVo2.setState("已确认");

        AbnormalVo abnormalVo3 = new AbnormalVo();
        abnormalVo3.setAlertType("车辆违停");
        abnormalVo3.setAlarmContent("违停区域有违停车辆");
        abnormalVo3.setAlarmTime("10:18:11");
        abnormalVo3.setState("未确认");

        AbnormalVo abnormalVo4 = new AbnormalVo();
        abnormalVo4.setAlertType("火源");
        abnormalVo4.setAlarmContent("吸烟区域有火源");
        abnormalVo4.setAlarmTime("10:31:51");
        abnormalVo4.setState("已确认");

        AbnormalVo abnormalVo5 = new AbnormalVo();
        abnormalVo5.setAlertType("可疑人员");
        abnormalVo5.setAlarmContent("停留时间过长");
        abnormalVo5.setAlarmTime("12:11:38");
        abnormalVo5.setState("未确认");

        AbnormalVo abnormalVo6 = new AbnormalVo();
        abnormalVo6.setAlertType("非法闯入");
        abnormalVo6.setAlarmContent("闯卡");
        abnormalVo6.setAlarmTime("14:39:26");
        abnormalVo6.setState("未确认");

        AbnormalVo abnormalVo7 = new AbnormalVo();
        abnormalVo7.setAlertType("非法闯入");
        abnormalVo7.setAlarmContent("闯卡");
        abnormalVo7.setAlarmTime("15:02:32");
        abnormalVo7.setState("已确认确认");

        AbnormalVo abnormalVo8 = new AbnormalVo();
        abnormalVo8.setAlertType("可疑人员");
        abnormalVo8.setAlarmContent("停留区域时间过长");
        abnormalVo8.setAlarmTime("16:16:26");
        abnormalVo8.setState("未确认");

        AbnormalVo abnormalVo9 = new AbnormalVo();
        abnormalVo9.setAlertType("可疑人员");
        abnormalVo9.setAlarmContent("轨迹异常");
        abnormalVo9.setAlarmTime("16:58:10");
        abnormalVo9.setState("未确认");

        AbnormalVo abnormalVo10 = new AbnormalVo();
        abnormalVo10.setAlertType("火源");
        abnormalVo10.setAlarmContent("吸烟区域有火源");
        abnormalVo10.setAlarmTime("17:00:49");
        abnormalVo10.setState("未确认");


        abnormalVos.add(abnormalVo);
        abnormalVos.add(abnormalVo1);
        abnormalVos.add(abnormalVo2);
        abnormalVos.add(abnormalVo3);
        abnormalVos.add(abnormalVo4);
        abnormalVos.add(abnormalVo5);
        abnormalVos.add(abnormalVo6);
        abnormalVos.add(abnormalVo7);
        abnormalVos.add(abnormalVo8);
        abnormalVos.add(abnormalVo9);
        abnormalVos.add(abnormalVo10);
        return abnormalVos;
    }

//    private static void extracted(AbnormalVo abnormalVo) {
//        String randomTime = randomTime("00:00:00","23:59:59");
//        abnormalVo.setAlarmTime(randomTime);
//    }


    /**
     * 在[beginStr,endStr]只随机生成时间,不包含日期
     * 在没有添加日期格式时,默认为1970-01-01
     * @param beginStr
     * @param endStr
     * @return
     */
    public static String randomTime(String beginStr,String endStr) {
        try {
            String format="HH:mm:ss";
            DateTime beginTime = DateTime.of(beginStr,format);
            DateTime endTime = DateTime.of(endStr, format);

            if (beginTime.getTime() > endTime.getTime()) {
                return null;
            }

            long randDateTime = random(beginTime.getTime(), endTime.getTime());
            DateTime of = DateTime.of(randDateTime);
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
            String format1 = simpleDateFormat.format(of);
            return format1;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private static long random(long begin, long end) {
        long rand = begin + (long)(Math.random()*(end - begin));
        if (rand  == begin || rand  == end) {
            return random(begin, end);
        }
        return rand;
    }



}
